<?php
/**
 * Общий класс-предок для модулей Платоники, инициализирует систему прав
 */
abstract class Module_Common extends RL_Module
{
	public $module_class = 'Common';

	public $aa;

	public function initialize( &$request_params ) {

		$aa = $this->ctx->mm->getModel("AclAssistantPlatonica");
		$aa->setPrincipalData($this->ctx->principal->data);
		$aa->setRequestParams(get_object_vars($request_params));
		$this->aa = $aa;
		$this->ctx->mm->setAclAssistant($aa);

		// это хак, каждый обработчик должен генерировать URL адрес сам, для того содержимого что он рендерит
		$this->aa->template_data['base_url'] = $this->rh->base_url;

	}

	/**
	 * @override
	 */
	public function executeMethod( $method , array $params = array())
	{
		$script = $method;

		$result = $this->rh->useClass($this->rh->modules_handlers_dir . $script);

		if(!$result) {
			return $this->ctx->debug->error("ERROR: cannot find handler $method of module " . $this->module_class);
		}

		$handler = new $method ( $this, $params );

		/* @var $handler RL_Handler */
		$handler->execute();

		// добавим "постоянные" шаблонные переменные
		// только в том случае, если ответ подготовленный обработчиком есть экземпляр RL_View_Template
		$content = $this->rh->response->getContent();
		if ($content instanceof RL_View_Template) {
			$content->data['pw_recovery_url'] = $this->rh->idsrv_pwd_recovery;
		}

	}

}

?>
